package view;

import java.awt.BorderLayout;
import java.awt.Desktop;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JButton;

import controller.MainController;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.JLabel;

import model.Benutzer;
import java.awt.Color;
import javax.swing.ImageIcon;

public class MainFrame extends JFrame {

	private MainController mainController;

	private Benutzer benutzer;

	private JPanel contentPane;

	/**
	 * Create the frame.
	 */
	public MainFrame(String title, MainController mainController, Benutzer benutzer) {
		super(title);
		setResizable(false);
		this.mainController = mainController;
		this.benutzer = benutzer;
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 400, 400);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 10));
		setContentPane(contentPane);
		
		JPanel panelOben = new JPanel();
		contentPane.add(panelOben, BorderLayout.NORTH);

		JLabel labelLogo = new JLabel("<html>" + this.benutzer + "<br>" + this.benutzer.getRolle() + "</html>");
		labelLogo.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Logo.png")));
		panelOben.add(labelLogo);
		
		JPanel panelMitte = new JPanel();
		contentPane.add(panelMitte, BorderLayout.CENTER);
		panelMitte.setLayout(new GridLayout(0, 3, 5, 5));
		
		JButton buttonTermineVerwalten = new JButton("");
		buttonTermineVerwalten.setEnabled(false);
		buttonTermineVerwalten.setBackground(Color.WHITE);
		buttonTermineVerwalten.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Termine.gif")));
		buttonTermineVerwalten.setToolTipText("Termine");
		buttonTermineVerwalten.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				TermineVerwaltenDialog termineVerwaltenDialog = new TermineVerwaltenDialog(MainFrame.this, MainFrame.this.mainController);
				termineVerwaltenDialog.setVisible(true);
			}
		});
		panelMitte.add(buttonTermineVerwalten);
		
		JButton buttonPatientenVerwalten = new JButton("");
		buttonPatientenVerwalten.setEnabled(false);
		buttonPatientenVerwalten.setBackground(Color.WHITE);
		buttonPatientenVerwalten.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Patienten.gif")));
		buttonPatientenVerwalten.setToolTipText("Patienten");
		buttonPatientenVerwalten.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				PatientenVerwaltenDialog patientenVerwaltenDialog = new PatientenVerwaltenDialog(MainFrame.this, MainFrame.this.mainController);
				patientenVerwaltenDialog.setVisible(true);
			}
		});
		panelMitte.add(buttonPatientenVerwalten);
		
		JButton buttonBenutzerVerwalten = new JButton("");
		buttonBenutzerVerwalten.setEnabled(false);
		buttonBenutzerVerwalten.setBackground(Color.WHITE);
		buttonBenutzerVerwalten.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Benutzer.gif")));
		buttonBenutzerVerwalten.setToolTipText("Benutzer");
		buttonBenutzerVerwalten.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BenutzerVerwaltenDialog benutzerVerwaltenDialog = new BenutzerVerwaltenDialog(MainFrame.this, MainFrame.this.mainController);
				benutzerVerwaltenDialog.setVisible(true);
			}
		});
		panelMitte.add(buttonBenutzerVerwalten);
		
		JButton buttonRaeumeVerwalten = new JButton("");
		buttonRaeumeVerwalten.setEnabled(false);
		buttonRaeumeVerwalten.setBackground(Color.WHITE);
		buttonRaeumeVerwalten.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Raeume.gif")));
		buttonRaeumeVerwalten.setToolTipText("R\u00E4ume");
		buttonRaeumeVerwalten.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				RaeumeVerwaltenDialog raeumeVerwaltenDialog = new RaeumeVerwaltenDialog(MainFrame.this, MainFrame.this.mainController);
				raeumeVerwaltenDialog.setVisible(true);
			}
		});
		panelMitte.add(buttonRaeumeVerwalten);
		
		JButton buttonHilfe = new JButton("");
		buttonHilfe.setBackground(Color.WHITE);
		buttonHilfe.setIcon(new ImageIcon(LoginDialog.class.getResource("/images/Hilfe.gif")));
		buttonHilfe.setToolTipText("Hilfe");
		buttonHilfe.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					Desktop.getDesktop().open(new File("Hilfe/Hilfe.pdf"));
				}
				catch (IOException e) {
					e.printStackTrace();
				}
			}
		});
		panelMitte.add(buttonHilfe);
		
		JPanel panelUnten = new JPanel();
		FlowLayout fl_panelUnten = (FlowLayout) panelUnten.getLayout();
		fl_panelUnten.setAlignment(FlowLayout.RIGHT);
		contentPane.add(panelUnten, BorderLayout.SOUTH);
		
		JButton buttonBeenden = new JButton("Beenden");
		buttonBeenden.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
		panelUnten.add(buttonBeenden);
		
		switch (this.benutzer.getRolle()) {
		case INHABER:
			buttonTermineVerwalten.setEnabled(true);
			buttonPatientenVerwalten.setEnabled(true);
			buttonBenutzerVerwalten.setEnabled(true);
			buttonRaeumeVerwalten.setEnabled(true);
			break;
		case REZEPTIONIST:
			buttonTermineVerwalten.setEnabled(true);
			buttonPatientenVerwalten.setEnabled(true);
			break;
		case THERAPEUT:
			buttonTermineVerwalten.setEnabled(true);
			buttonPatientenVerwalten.setEnabled(true);
			break;
		default:
			break;
		}
	}

}
